#include <stdio.h>
#include <string.h>

int main()
{	 	   		 
    char name[256];     //一行最大长度
    int nwords;         //单词总数
    char *p = name;
    int in;             //是否在单词内 1：是 0：否
    int len;            //某个单词的长度计数
    int n[5] = {0};     //统计各种长度的单词数
    //n[0]:长度为1的单词数 n[1]:长度在2到5的单词数 n[2]:长度在6到10的单词数
    //n[3]:长度在11到20的单词数 n[4]:长度大于等于21的单词数
    printf("请输入一行字符：");
    gets(name);

    len = 0;
    nwords = 0;
    in = 0;
    while (1)
    {	 	   		 
        if (*p == ' ' || *p == '\0' || *p == '\n')
        {	 	   		 
            in = 0;     //遇到空格则在单词外
            if (len == 1)
            {	 	   		 
                n[0]++;
            }
            else if (len >= 2 && len <= 5)
            {	 	   		 
                n[1]++;
            }
            else if (len >= 6 && len <= 10)
            {	 	   		 
                n[2]++;
            }
            else if (len >= 11 && len <= 20)
            {	 	   		 
                n[3]++;
            }
            else
            {	 	   		 
                n[4]++;
            }
            len = 0;
        }
        else
        {	 	   		 
            if (!in)    //读到一个非空格，由单词外状态转入单词内状态
            {	 	   		 
                in = 1;
                nwords++;
            }
            len++;
        }
        if (*p == '\n' || *p == '\0')
        {	 	   		 
            break;
        }
        else
        {	 	   		 
            p++;
        }
    }

    printf("长度为1的单词数：%d\n", n[0]);
    printf("长度在2到5的单词数：%d\n", n[1]);
    printf("长度在6到10的单词数：%d\n", n[2]);
    printf("长度在11到20的单词数：%d\n", n[3]);
    printf("长度大于等于21的单词数：%d\n", n[4]);

    return 0;
}	 	   